Skip to content

Redesign failed-run recovery eligibility and lineage - #3243

Open
AbigailDeng wants to merge 4 commits into
fix/2026-08-06_run-detail-outcome-path-usagefrom
fix/2026-08-06_run-retry-eligibility-lineage
Open

Redesign failed-run recovery eligibility and lineage#3243
AbigailDeng wants to merge 4 commits into
fix/2026-08-06_run-detail-outcome-path-usagefrom
fix/2026-08-06_run-retry-eligibility-lineage

Conversation

@AbigailDeng

@AbigailDeng AbigailDeng commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

Stack

This PR is intentionally stacked on #3242 (fix/2026-08-06_run-detail-outcome-path-usage). #3242 owns the Run Detail presentation foundation; this PR adds authoritative recovery eligibility and lineage on top. After #3242 merges, this PR should be retargeted to feat/2026-08-04_workflow-activity-vnext.

Problem and solution

Run detail inferred retry eligibility from failed-step count and run-again eligibility from graph shape. That made non-retryable failures look actionable, left unavailable actions unexplained, and could not represent authoritative retry consequences or lineage.

This frontend change removes those inferences and consumes an optional typed recovery subcontract from the run-detail read model. It:

  • enables retry and run again only when the corresponding typed action is explicitly eligible;
  • keeps unavailable controls keyboard-focusable and associates each with a visible reason;
  • maps typed access/configuration recommendations to the scoped Settings surfaces;
  • shows definition revision, starting step, prior-output reuse, and cost risk before dispatch;
  • presents the fork response as New run accepted, distinct from observed completion;
  • creates related-run links only from typed parent/child run IDs and never treats newRunActorId as a run identity.

Conflict resolution

  • Preserved fix(console): redesign run detail around trustworthy outcomes #3242's five goal-oriented surfaces: Overview, Steps, Timeline, Usage, and Execution path.
  • Preserved Redesign failed-run recovery eligibility and lineage #3243's typed recovery, recommendation, confirmation, receipt, and lineage behavior.
  • Moved typed parent/child lineage into Overview.
  • Removed Run Detail's obsolete getRunGraph query and graph refresh/error dependency. Execution path uses versioned run.steps; recovery uses only run.recovery.
  • Replaced the graph-failure eligibility test with an empty-execution-path test that proves typed run-again eligibility remains authoritative.
  • Unified the English and Chinese locale keys from both PRs without duplicates.

Relative to #3242, the final stacked diff contains exactly the 10 files owned by #3243's recovery feature.

Impact paths

  • Workflow Activity vNext Run Detail recovery actions and confirmation
  • Workflow Activity API response decoding and typed frontend models
  • Run lineage links and accepted fork receipt presentation
  • English and Chinese vNext locale catalogues
  • Focused adapter, resolver, observation-fixture, and route integration tests

Backend dependency

The current ObservatoryRunDetail backend contract does not yet expose typed retry/run-again eligibility, failure recommendation, definition revision, reuse semantics, cost semantics, or durable parent/child run lineage. The current fork receipt exposes newRunActorId, not a new runId.

Until the backend adds and populates the typed read-model fields consumed here, recovery decodes to null, both fork actions remain unavailable with visible explanations, and no lineage link is invented. This is the frontend portion of #3225 and intentionally does not close the issue.

Local verification

  • Related-test preflight: pnpm exec jest --listTests --findRelatedTests src/pages/workflow-activity-vnext/activity/RunDetailPage.tsx src/pages/workflow-activity-vnext/activity/runRecovery.ts src/shared/api/workflowActivityApi.ts - PASS, bounded to 6 Workflow Activity vNext test files.
  • Dependency-related tests: pnpm exec jest --runInBand --findRelatedTests src/pages/workflow-activity-vnext/activity/RunDetailPage.tsx src/pages/workflow-activity-vnext/activity/runRecovery.ts src/shared/api/workflowActivityApi.ts - PASS, 6 suites / 134 tests.
  • Explicit changed tests: pnpm exec jest --runInBand --runTestsByPath src/pages/workflow-activity-vnext/activity/RunDetailPage.test.tsx src/pages/workflow-activity-vnext/activity/runRecovery.test.ts src/pages/workflow-activity-vnext/hooks/useRunObservation.test.ts src/shared/api/workflowActivityApi.test.ts - PASS, 4 suites / 27 tests.
  • Locale contracts: pnpm exec jest --runInBand --runTestsByPath src/locales/catalog.test.ts src/locales/hardcodedCopyAudit.test.ts - PASS, 2 suites / 14 tests.
  • Changed-file static checks: pnpm exec biome check src/locales/workflowActivityVNextMessages.en-US.ts src/locales/workflowActivityVNextMessages.zh-CN.ts src/pages/workflow-activity-vnext/activity/RunDetailPage.test.tsx src/pages/workflow-activity-vnext/activity/RunDetailPage.tsx src/pages/workflow-activity-vnext/activity/runRecovery.test.ts src/pages/workflow-activity-vnext/activity/runRecovery.ts src/pages/workflow-activity-vnext/hooks/useRunObservation.test.ts src/shared/api/workflowActivityApi.test.ts src/shared/api/workflowActivityApi.ts src/shared/models/workflowActivity.ts - PASS, 10 files.
  • Stability guard: bash tools/ci/test_stability_guards.sh - PASS.
  • vNext baseline: python3 apps/aevatar-console-web/docs/design-baselines/workflow-activity-vnext/verify-baseline.py - PASS, 17/17 frames and byte-identical generator output.
  • Whitespace: git diff --check origin/fix/2026-08-06_run-detail-outcome-path-usage - PASS.

Full frontend suite, package-wide typecheck, and production build are delegated to GitHub CI by the personal incremental frontend policy. No reliable repository-native affected typecheck target is available. CI is not being babysat as part of this update.

Design baseline

Design baseline: apps/aevatar-console-web/docs/design-baselines/workflow-activity-vnext/

Design SHA-256: 30e74d7b410ae72c4c91432355436679033679c54c10b1702908435b001577de

Relates to #3225.

@AbigailDeng

AbigailDeng commented Aug 7, 2026

Copy link
Copy Markdown
Contributor Author

Local verification

  • Related tests: pnpm exec jest src/pages/workflow-activity-vnext/activity/RunDetailPage.test.tsx src/pages/workflow-activity-vnext/activity/runRecovery.test.ts src/pages/workflow-activity-vnext/hooks/useRunObservation.test.ts src/shared/api/workflowActivityApi.test.ts --runInBand — 4 suites, 23 tests passed
  • Changed-file static checks: pnpm exec biome lint src/locales/workflowActivityVNextMessages.en-US.ts src/locales/workflowActivityVNextMessages.zh-CN.ts src/pages/workflow-activity-vnext/activity/RunDetailPage.test.tsx src/pages/workflow-activity-vnext/activity/RunDetailPage.tsx src/pages/workflow-activity-vnext/activity/runRecovery.test.ts src/pages/workflow-activity-vnext/activity/runRecovery.ts src/pages/workflow-activity-vnext/hooks/useRunObservation.test.ts src/shared/api/workflowActivityApi.test.ts src/shared/api/workflowActivityApi.ts src/shared/models/workflowActivity.ts — 10 files passed
  • Test stability guard: bash tools/ci/test_stability_guards.sh — passed
  • Full frontend suite/typecheck/build: deferred to GitHub CI by personal local workflow policy

@AbigailDeng
AbigailDeng changed the base branch from feat/2026-08-04_workflow-activity-vnext to fix/2026-08-06_run-detail-outcome-path-usage August 10, 2026 03:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant